package com.lzy.crm.service;

import java.util.List;

import com.lzy.crm.base.page.PageQuery;
import com.lzy.crm.base.service.BaseService;
import com.lzy.crm.dao.criteria.UserCriteria;
import com.lzy.crm.domain.User;
import com.lzy.crm.vo.AgentUser;
import com.lzy.crm.vo.PlayerInfo;

/**
 * 用户类
 * @author csp
 *
 */
public interface UserService extends  BaseService<User, UserCriteria> {

	/**
	 * 通过邮箱获取用户
	 * @param 
	 */
	public List<User> getUserListByEmailAndPwd(String email);
	
	/**
	 * 查询玩家Id是否已在绑定列表中
	 * @param gameId
	 * @return
	 */
	public List<User> getUserByGameId(String gameId);
	
	/**
	 * 通过手机获取用户
	 * @param 
	 */
	public List<User> getUserListByPhoneAndPwd(String phone);
	
	
	
	/**
	 * 查询下级玩家
	 * @param parentId
	 * @param upParentId
	 * gameUserId
	 * @return
	 */
	public List<User> getAllPlayerUserList(Integer parentId ,Integer upParentId ,String gameUserId,PageQuery pageQuery );
	
	
	
	/**
	 * 查询玩家信息
	 * @param gameId
	 * @return
	 */
	public User getUserInfoByGameid(String gameId);
	
	/**
	 * 查询玩家信息
	 * @param agentId
	 * @return
	 */
	public User getUserInfoByAgentId(String agentId);
	
	
	/**
	 * 根据公众号唯一标识ID 查询
	 * @param openid
	 * @return
	 */
	public User getUserByOpenid(String openid);
	
	
	
	
	/**
	 * 根据开放平台唯一标识查询
	 * @param unionid
	 * @return
	 */
	public User getUserByUnionid(String unionid);
	
	
	/**
	 * 获取代理用户
	 * @param userId 用户ID
	 * @return
	 */
	public List<AgentUser> getAgentUserList(Integer userId,String phone,String status,PageQuery pageQuery);
	
	
	/**
	 * 获取代理用户
	 * @param userId 用户ID
	 * @return
	 */
	public List<AgentUser> getAllAgentUserList(Integer userId,String phone,String status,PageQuery pageQuery);
	
	
	/**
	 * 跨库查询玩家信息
	 * @param userId
	 * @param pageQuery
	 * @return
	 */
	public List<PlayerInfo> getPlayerInfoList(String gameId);
	
	/**
	 * 跨库查询玩家信息
	 * @param userId
	 * @param unionId
	 * @param pageQuery
	 * @return
	 */
	public PlayerInfo getPlayerInfo(Integer gameId,String unionId);
	
	
	/**
	 * 给玩家加房卡
	 * @param userId
	 * @param insureScore  饭卡数
	 */
	public void addPlayerCard(Integer userId,Integer insureScore);
	
	
	/**
	 * 赠送房卡信息
	 * @param user
	 * @param parentPlayerInfo
	 * @param roomCardMenInvited
	 */
	public void invitedAddPlayerCard(User user,PlayerInfo parentPlayerInfo,Integer roomCardMenInvited,String invitedName)throws Exception;
	
	
	/**
	 * 邀请有效玩家数量
	 * @param parentId
	 * @return
	 */
	public List<User> getUserListByParentId(Integer parentId);
	
	/**
	 * 清除玩家游戏问题
	 * @param gameId
	 */
	public void unlockPayerByGameId(String gameId);
	
	/**
	 * 清除表
	 */
	public void unlockTable();
	
}
